package leetcode_201_220;

import java.util.Arrays;

public class isIsomorphic_205 {
    public boolean isIsomorphic(String s, String t) {
        int s_len=s.length(),t_len=t.length();
        if(s_len!=t_len)
            return false;
        int []find=new int[200];     //s中字符映射的字母
        int []count=new int[200];  //t中被映射位置
        Arrays.fill(find,-1);
        Arrays.fill(count,-1);
        for(int i=0;i<s_len;i++){
            int s_char=s.charAt(i)-' ';
            int t_char=t.charAt(i)-' ';
            if(find[s_char]==-1 && count[t_char] == -1){               //未映射过且映射的字母未被其他字母映射
                find[s_char]=t_char;
                count[t_char]=s_char;
            }else if(find[s_char] != t_char )  //已经被映射过
                return false;
        }
        return true;
    }

    /**
     * 直接用char数组方便的多
     */
    public boolean isIsomorphic2(String s, String t) {
        char[] ch1 = s.toCharArray();
        char[] ch2 = t.toCharArray();
        int len = s.length();
        for (int i = 0; i < len; i++) {
            if(s.indexOf(ch1[i]) != t.indexOf(ch2[i])){   //每字符 首次出现、最后出现、指定位出现 索引始终相同
                //判断的关键点就是相同的字符要对应相同的字符，那么相同字符处于后位置的字符的第一次出现的位置就应该相同
                return false;
            }
        }
        return true;

    }
}
